---
id: 5dc2385ff86c76b9248c6eb7
title: ステップ 5
challengeType: 0
dashedName: step-5
---

# --description--

HTML5 には、さまざまなコンテンツの領域を表す要素があります。 これらの要素によって HTML が読みやすくなり、検索エンジン最適化 (SEO) やアクセシビリティの向上に役立ちます。

`main` 要素は、HTML ドキュメント本文のメインとなるコンテンツを表すために使われます。 `main` 要素内のコンテンツはそのドキュメント特有のコンテンツであり、また、他の部分と重複しない内容であるべきです。

```html
<main>
  <h1>Most important content of the document</h1>
  <p>Some more important content...</p>
</main>
```

このページのメインとなる領域を表すため、`h1` 要素の前に開始タグ `<main>`、`p` 要素の後に終了タグ `</main>` を追加しましょう。

# --hints--

`main` 要素には開始タグが必要です。 開始タグは `<elementName>` のような形式の構文です。

```js
assert(document.querySelector('main'));
```

`main` 要素には終了タグが必要です。 終了タグは `<` の直後に `/` があります。

```js
assert(code.match(/<\/main\>/));
```

`main` 要素の開始タグは `body` 要素の開始タグの下に置く必要があります。 順番が誤っているようです。

```js
const main = document.querySelector('main');
assert.equal(main?.previousElementSibling, null);
```

`main` 要素の開始タグは `h1` 要素の上に置く必要があります。 順番が誤っているようです。

```js
const collection = [...document.querySelectorAll('main,h1')].map(
  (node) => node.nodeName
);
assert(collection.indexOf('MAIN') < collection.indexOf('H1'));
```

`main` 要素の終了タグは `p` 要素の下に置く必要があります。 順番が誤っているようです。

```js
const mainNode = document.querySelector('main');
const pNode = document.querySelector('p');
assert(
  mainNode.contains(pNode) &&
    pNode.textContent.toLowerCase().match(/see more cat photos in our gallery/)
);
```

# --seed--

## --seed-contents--

```html
<html>
  <body>
--fcc-editable-region--

    <h1>CatPhotoApp</h1>
    <h2>Cat Photos</h2>
    <!-- TODO: Add link to cat photos -->
    <p>See more cat photos in our gallery.</p>

--fcc-editable-region--
  </body>
</html>
```

